[アップデート] Amazon Q Developer のドキュメント生成機能を試してみた #AWSreInvent

[アップデート] Amazon Q Developer のドキュメント生成機能を試してみた #AWSreInvent

Clock Icon2024.12.04

中川です。

Amazon Q Developer エージェントの新機能としてドキュメント生成が発表されました。

https://aws.amazon.com/jp/about-aws/whats-new/2024/12/amazon-q-developer-generate-documentation-source-code/

https://aws.amazon.com/jp/blogs/aws/new-amazon-q-developer-agent-capabilities-include-generating-documentation-code-reviews-and-unit-tests/

プロジェクトのコードを元に Readme ファイルとデータフロー図を自動生成してくれます。
この新しい機能により、Q Developer は既存のコードベースをより速く理解したり、新しい機能を素早く文書化したりすることができます。

やってみた

早速やってみました。
ドキュメントを参考に CDK のサンプルアプリケーションを作成します。

VSCode で作成したプロジェクトを開き、Amazon Q の拡張機能を表示します。
チャット欄に /doc と入力してエンターを入れます。

ss 2024-12-03 14.06.49.png

README を作成するか更新するか提案されるので、今回はそのまま「Create a README」を選択します。

ss_2024-12-03_14_07_01.png

プロジェクトを聞かれるので、そのまま「Yes」を選択します。

ss_2024-12-03_14_07_09.png

ソースファイルのスキャン、ソースファイルの要約がされた後に、ドキュメントの生成が行われています。

ss 2024-12-03 14.15.35.png

ドキュメントの生成が完了すると生成されたファイルと、それを受け入れるか, 拒否するか, 再生成するか、表示されます。
見た感じ良さそうだったので、[Accept]をクリックします。

ss_2024-12-03_14_08_39.png

ファイルが保存され、プレビュー結果が自動で表示されました。

ss 2024-12-03 14.08.57.png

ブロックや見出しの使い方が上手で、データフロー図も綺麗に作成してくれることを確認できました。

ss 2024-12-03 16.15.58.png

生成された README の全文は以下より参照ください。

README 全文

AWS CDK Hello World Lambda Function

This project demonstrates how to create a simple "Hello World" Lambda function using AWS CDK with TypeScript.

The AWS Cloud Development Kit (CDK) is an open-source software development framework to define cloud infrastructure in code and provision it through AWS CloudFormation. This project sets up a basic CDK application that deploys a Lambda function with a function URL, allowing you to invoke the function via HTTP requests.

The Lambda function returns a simple "Hello World" message when invoked. This project serves as a starting point for more complex serverless applications and showcases the power of infrastructure as code using AWS CDK.

Repository Structure

.
├── bin
│   └── hello-cdk.ts
├── lib
│   └── hello-cdk-stack.ts
├── test
│   └── hello-cdk.test.ts
├── cdk.json
├── jest.config.js
├── package.json
└── tsconfig.json
  • bin/hello-cdk.ts: Entry point for the CDK application
  • lib/hello-cdk-stack.ts: Defines the main CDK stack with the Lambda function
  • test/hello-cdk.test.ts: Contains tests for the CDK stack (currently commented out)
  • cdk.json: CDK configuration file
  • jest.config.js: Jest testing framework configuration
  • package.json: Node.js project configuration and dependencies
  • tsconfig.json: TypeScript compiler configuration

Usage Instructions

Prerequisites

  • Node.js (v14.x or later)
  • AWS CLI configured with appropriate credentials
  • AWS CDK CLI (v2.x)

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd hello-cdk
    
  2. Install dependencies:

    npm install
    

Deploying the Stack

  1. Synthesize the CloudFormation template:

    npx cdk synth
    
  2. Deploy the stack:

    npx cdk deploy
    

After deployment, the CDK will output the function URL. You can use this URL to invoke your Lambda function.

Testing

To run the tests (once implemented):

npm test

Modifying the Lambda Function

The Lambda function is defined inline in lib/hello-cdk-stack.ts. To modify its behavior, update the code within the lambda.Code.fromInline() method.

Troubleshooting

  1. Issue: CDK deployment fails

    • Ensure your AWS CLI is correctly configured with the appropriate permissions
    • Check the CloudFormation console for detailed error messages
    • Verify that you have the latest version of the CDK CLI installed
  2. Issue: Lambda function returns an error

    • Check the CloudWatch logs for the Lambda function
    • Ensure the function handler matches the one specified in the CDK stack
  3. Issue: Unable to invoke the Lambda function URL

    • Verify that the function URL is correctly output after deployment
    • Ensure your network allows outbound HTTPS connections

For more detailed debugging:

  • Enable CDK debug logging:
    export CDK_DEBUG=true
    
  • Use the --debug flag with CDK commands for verbose output

Data Flow

  1. User sends an HTTP request to the Lambda function URL
  2. API Gateway (managed by Lambda function URLs) receives the request and forwards it to the Lambda function
  3. Lambda function executes, generating a "Hello World" response
  4. The response is sent back through API Gateway to the user
[User]->[Function URL]->[Lambda]->[Function URL]->[User]

Note: The Lambda function in this project is simple and stateless. For more complex applications, you might introduce additional components like databases or other AWS services.

Infrastructure

This project uses AWS CDK to define the following resources:

Lambda

  • HelloWorldFunction: A Node.js Lambda function that returns a "Hello World" message
    • Runtime: Node.js 20.x
    • Handler: index.handler
    • Code: Defined inline in the CDK stack

Lambda Function URL

  • Function URL: Provides HTTP(S) endpoint for the Lambda function
    • Auth Type: NONE (public access)

CloudFormation Outputs

  • myFunctionUrlOutput: The URL of the Lambda function, allowing easy access to the function's endpoint

The infrastructure is defined in the HelloCdkStack class within lib/hello-cdk-stack.ts.

さいごに

Amazon Q Developer エージェントの新機能としてドキュメント生成が発表されたので試してみました。
予想以上にきれいなドキュメントが生成されてびっくりしています。
ますます Amazon Q が日本語対応してくれるときが楽しみになりました!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.